import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:xiongan_app_yy/widgets/notification/erp_notification.dart';

class DropdownButtonStatefulWidget extends StatefulWidget {
  final List<String> list;
  final String hintText;
  final String selectValue;
  final ValueChanged<String> selectCallback;

  @override
  State<StatefulWidget> createState() {
    return _DropdownState();
  }

  DropdownButtonStatefulWidget(
      {@required this.list, @required this.hintText, this.selectCallback,this.selectValue});
}

class _DropdownState extends State<DropdownButtonStatefulWidget> {
//  下拉菜单选中的值（注意：在初始化时，要么为null，这时显示默认hint的值；
// 如果自己设定值，则值必须为列表中的一个值，如果不在列表中，会抛出异常）
  String selectValue;


  @override
  void initState() {
    selectValue=widget.selectValue;
  }

  @override
  Widget build(BuildContext conrtext) {
    return DropdownButton(
      //要显示的条目
      items: _getItems(),
      //默认显示的值
      hint: Text(widget.hintText),

      //下拉菜单选中的值（注意：在初始化时，要么为null，这时显示默认hint的值；
      // 如果自己设定值，则值必须为列表中的一个值，如果不在列表中，会抛出异常）
      value: selectValue,
      onChanged: (itemValue) {
        //itemValue为选中的值
        print("触发~~~~");
        ErpNotification(itemValue, index: widget.list.indexOf(itemValue))
            .dispatch(context);
        _onChanged(itemValue);
      },
      isExpanded: true,
      underline: Container(),
    );
  }

  _onChanged(String value) {
    //向外部回调传值
    if(widget.selectCallback!=null){
      widget.selectCallback(value);
    }

    //更新自身的显示的状态
    setState(() {
      selectValue = value;
    });
  }

  List<DropdownMenuItem> _getItems() {
    return widget.list
        .map((item) => DropdownMenuItem(
              value: item,
              child: Text(item),
            ))
        .toList();
  }
}
